Micron Document
🎖️GitЯра🎖️

Node / meshtastic / Meshtastic-Android / files / androidApp / src / google / kotlin / org / meshtastic / app / ai / GeminiNanoDocAssistant.kt

Displaying Raw • Download

androidApp/src/google/kotlin/org/meshtastic/app/ai/GeminiNanoDocAssistant.kt 97ce3cd27f7edc7f2480bc0c8bc4fb572d2d3fc1 (97ce3cd2) Text, 22.27 KB

T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.app.ai

Tff7b72import T7ee787co.touchlab.kermit.Logger
Tff7b72import T7ee787com.google.firebase.Firebase
Tff7b72import T7ee787com.google.firebase.ai.DownloadStatus
Tff7b72import T7ee787com.google.firebase.ai.InferenceMode
Tff7b72import T7ee787com.google.firebase.ai.OnDeviceConfig
Tff7b72import T7ee787com.google.firebase.ai.OnDeviceModelStatus
Tff7b72import T7ee787com.google.firebase.ai.ai
Tff7b72import T7ee787com.google.firebase.ai.type.GenerativeBackend
Tff7b72import T7ee787com.google.firebase.ai.type.PublicPreviewAPI
Tff7b72import T7ee787com.google.firebase.ai.type.content
Tff7b72import T7ee787kotlinx.coroutines.flow.first
Tff7b72import T7ee787org.meshtastic.core.repository.NodeRepository
Tff7b72import T7ee787org.meshtastic.feature.docs.ai.AIDocAssistant
Tff7b72import T7ee787org.meshtastic.feature.docs.data.DocBundleLoader
Tff7b72import T7ee787org.meshtastic.feature.docs.data.KeywordSearchEngine
Tff7b72import T7ee787org.meshtastic.feature.docs.model.AIDocAssistantResult
Tff7b72import T7ee787org.meshtastic.feature.docs.model.DocPage
Tff7b72import T7ee787org.meshtastic.feature.docs.model.DocsAiError

T8b949e/**
* Gemini on-device AI assistant for the Google flavor.
*
* Runs entirely on-device using the Firebase AI Logic SDK with [InferenceMode.ONLY_ON_DEVICE]. Supported on Pixel 9+,
* Samsung Galaxy S25/S26, OnePlus 13/15, and other devices with AICore.
*
* Context strategy: extracts only the **most relevant paragraphs** from each page (those containing query terms),
* strips markdown formatting to maximize information density, and fits within the on-device token budget (optimized for
* modern Nano v4 with up to 32K tokens / 32,000 characters context).
*
* Multi-turn history is supported locally by formatting the past conversation turns directly into the prompt.
*
* @see <a href="https://firebase.google.com/docs/ai-logic/hybrid/android/get-started">Firebase AI Logic Hybrid</a>
*/
Tf0883e@OptInTb4b4b4(Te6edf3PublicPreviewAPITff7b72::Te6edf3classTb4b4b4)
Tff7b72class T56d364GeminiNanoDocAssistantTb4b4b4(
Tff7b72private Tff7b72val Te6edf3searchEngineTb4b4b4: Te6edf3KeywordSearchEngineTb4b4b4,
Tff7b72private Tff7b72val Te6edf3bundleLoaderTb4b4b4: Te6edf3DocBundleLoaderTb4b4b4,
Tff7b72private Tff7b72val Te6edf3nodeRepositoryTb4b4b4: Te6edf3NodeRepositoryTb4b4b4,
Tb4b4b4) Tb4b4b4: Te6edf3AIDocAssistant Tb4b4b4{

T8b949e/** On-device model for fast, local answers grounded in bundled docs. */
Tff7b72private Tff7b72val Te6edf3onDeviceModel Tff7b72by Te6edf3lazy Tb4b4b4{
Te6edf3FirebaseTb4b4b4.Te6edf3aiTb4b4b4(Te6edf3backend Tff7b72= Te6edf3GenerativeBackendTb4b4b4.Te6edf3googleAITb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3generativeModelTb4b4b4(
Te6edf3modelName Tff7b72= Te6edf3MODEL_NAMETb4b4b4,
Te6edf3systemInstruction Tff7b72= Te6edf3content Tb4b4b4{ Te6edf3textTb4b4b4(Te6edf3SYSTEM_INSTRUCTIONTb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3onDeviceConfig Tff7b72= Te6edf3OnDeviceConfigTb4b4b4(Te6edf3mode Tff7b72= Te6edf3InferenceModeTb4b4b4.Te6edf3ONLY_ON_DEVICETb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}

T8b949e/** Conversation history stored as list of (Question, Answer) pairs. */
Tff7b72private Tff7b72val Te6edf3history Tff7b72= Te6edf3mutableListOfTff7b72<Te6edf3PairTff7b72<Tffa657StringTb4b4b4, Tffa657StringTff7b72>Tff7b72>Tb4b4b4(Tb4b4b4)

Tff7b72override Tff7b72suspend Tff7b72fun Td2a8ffisSupportedTb4b4b4(Tb4b4b4)Tb4b4b4: Tffa657Boolean Tff7b72= Tff7b72try Tb4b4b4{
Tff7b72val Te6edf3ext Tff7b72= Te6edf3onDeviceModelTb4b4b4.Te6edf3onDeviceExtension
Tff7b72val Te6edf3status Tff7b72= Te6edf3extTff7b72?.Te6edf3checkStatusTb4b4b4(Tb4b4b4)
Te6edf3LoggerTb4b4b4.Te6edf3dTb4b4b4(Te6edf3tag Tff7b72= Te6edf3TAGTb4b4b4) Tb4b4b4{ Ta5d6ff"Ta5d6ffOn-device model status: Tffd700$Te6edf3statusTa5d6ff" Tb4b4b4}
Tff7b72when Tb4b4b4(Te6edf3statusTb4b4b4) Tb4b4b4{
Te6edf3OnDeviceModelStatusTb4b4b4.Te6edf3AVAILABLE Tff7b72-Tff7b72> Tff7b72true

Te6edf3OnDeviceModelStatusTb4b4b4.Te6edf3DOWNLOADING Tff7b72-Tff7b72> Tff7b72true

Te6edf3OnDeviceModelStatusTb4b4b4.Te6edf3DOWNLOADABLE Tff7b72-Tff7b72> Tb4b4b4{
Te6edf3LoggerTb4b4b4.Te6edf3iTb4b4b4(Te6edf3tag Tff7b72= Te6edf3TAGTb4b4b4) Tb4b4b4{ Ta5d6ff"Ta5d6ffModel downloadable — requesting downloadTa5d6ff" Tb4b4b4}
Te6edf3extTb4b4b4.Te6edf3downloadTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3collect Tb4b4b4{ Te6edf3downloadStatus Tff7b72-Tff7b72>
Tff7b72when Tb4b4b4(Te6edf3downloadStatusTb4b4b4) Tb4b4b4{
Tff7b72is Te6edf3DownloadStatusTb4b4b4.Te6edf3DownloadStarted Tff7b72-Tff7b72>
Te6edf3LoggerTb4b4b4.Te6edf3dTb4b4b4(Te6edf3tag Tff7b72= Te6edf3TAGTb4b4b4) Tb4b4b4{ Ta5d6ff"Ta5d6ffDownload started: Tffd700${Te6edf3downloadStatusTb4b4b4.Te6edf3bytesToDownloadTffd700}Ta5d6ff bytesTa5d6ff" Tb4b4b4}

Tff7b72is Te6edf3DownloadStatusTb4b4b4.Te6edf3DownloadInProgress Tff7b72-Tff7b72>
Te6edf3LoggerTb4b4b4.Te6edf3dTb4b4b4(Te6edf3tag Tff7b72= Te6edf3TAGTb4b4b4) Tb4b4b4{
Ta5d6ff"Ta5d6ffDownload progress: Tffd700${Te6edf3downloadStatusTb4b4b4.Te6edf3totalBytesDownloadedTffd700}Ta5d6ff bytesTa5d6ff"
Tb4b4b4}

Tff7b72is Te6edf3DownloadStatusTb4b4b4.Te6edf3DownloadCompleted Tff7b72-Tff7b72> Te6edf3LoggerTb4b4b4.Te6edf3iTb4b4b4(Te6edf3tag Tff7b72= Te6edf3TAGTb4b4b4) Tb4b4b4{ Ta5d6ff"Ta5d6ffModel download completedTa5d6ff" Tb4b4b4}

Tff7b72is Te6edf3DownloadStatusTb4b4b4.Te6edf3DownloadFailed Tff7b72-Tff7b72>
Te6edf3LoggerTb4b4b4.Te6edf3wTb4b4b4(Te6edf3tag Tff7b72= Te6edf3TAGTb4b4b4) Tb4b4b4{ Ta5d6ff"Ta5d6ffModel download failed: Tffd700$Te6edf3downloadStatusTa5d6ff" Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72true
Tb4b4b4}

Tff7b72else Tff7b72-Tff7b72> Tff7b72false
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4: Te6edf3ExceptionTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3e Tff7b72is Te6edf3kotlinxTb4b4b4.Te6edf3coroutinesTb4b4b4.Te6edf3CancellationExceptionTb4b4b4) Tff7b72throw Te6edf3e
Te6edf3LoggerTb4b4b4.Te6edf3wTb4b4b4(Te6edf3tag Tff7b72= Te6edf3TAGTb4b4b4) Tb4b4b4{ Ta5d6ff"Ta5d6ffisSupported() check failed: Tffd700${Te6edf3eTb4b4b4.Te6edf3messageTffd700}Ta5d6ff" Tb4b4b4}
Tff7b72false
Tb4b4b4}

Tff7b72override Tff7b72suspend Tff7b72fun Td2a8ffanswerTb4b4b4(Te6edf3questionTb4b4b4: Tffa657StringTb4b4b4, Te6edf3currentPageIdTb4b4b4: Tffa657String?Tb4b4b4)Tb4b4b4: Te6edf3AIDocAssistantResult Tff7b72=
Te6edf3answerStreamTb4b4b4(Te6edf3questionTb4b4b4, Te6edf3currentPageIdTb4b4b4)Tb4b4b4.Te6edf3first Tb4b4b4{ Tffa657it Tff7b72!is Te6edf3AIDocAssistantResultTb4b4b4.Te6edf3Partial Tb4b4b4}

Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffTooGenericExceptionCaughtTa5d6ff"Tb4b4b4)
Tff7b72override Tff7b72fun Td2a8ffanswerStreamTb4b4b4(
Te6edf3questionTb4b4b4: Tffa657StringTb4b4b4,
Te6edf3currentPageIdTb4b4b4: Tffa657String?Tb4b4b4,
Tb4b4b4)Tb4b4b4: Te6edf3kotlinxTb4b4b4.Te6edf3coroutinesTb4b4b4.Te6edf3flowTb4b4b4.Te6edf3FlowTff7b72<Te6edf3AIDocAssistantResultTff7b72> Tff7b72= Te6edf3kotlinxTb4b4b4.Te6edf3coroutinesTb4b4b4.Te6edf3flowTb4b4b4.Te6edf3flow Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72val Te6edf3bundle Tff7b72= Te6edf3bundleLoaderTb4b4b4.Te6edf3loadTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3queryTerms Tff7b72= Te6edf3extractQueryTermsTb4b4b4(Te6edf3questionTb4b4b4)

T8b949e// Load all page content for full-text search ranking.
Tff7b72val Te6edf3allContent Tff7b72=
Te6edf3bundleTb4b4b4.Te6edf3pagesTb4b4b4.Te6edf3associateWith Tb4b4b4{ Te6edf3page Tff7b72-Tff7b72> Te6edf3bundleLoaderTb4b4b4.Te6edf3readPageTb4b4b4(Te6edf3pageTb4b4b4.Te6edf3idTb4b4b4)Tff7b72?.Te6edf3markdownTb4b4b4.Te6edf3orEmptyTb4b4b4(Tb4b4b4) Tb4b4b4}

T8b949e// Rank pages by relevance: full-text content search + keyword/title matching.
Tff7b72val Te6edf3rankedPages Tff7b72= Te6edf3rankPagesByRelevanceTb4b4b4(Te6edf3queryTermsTb4b4b4, Te6edf3bundleTb4b4b4.Te6edf3pagesTb4b4b4, Te6edf3allContentTb4b4b4)
Te6edf3LoggerTb4b4b4.Te6edf3dTb4b4b4(Te6edf3tag Tff7b72= Te6edf3TAGTb4b4b4) Tb4b4b4{ Ta5d6ff"Ta5d6ffRanked pages: Tffd700${Te6edf3rankedPagesTb4b4b4.Te6edf3takeTb4b4b4(T79c0ff5Tb4b4b4)Tb4b4b4.Te6edf3map Tb4b4b4{ Ta5d6ff"Tffd700${Tffa657itTb4b4b4.Te6edf3firstTb4b4b4.Te6edf3idTffd700}Ta5d6ff(Tffd700${Tffa657itTb4b4b4.Te6edf3secondTffd700}Ta5d6ff)Ta5d6ff" Tb4b4b4}Tffd700}Ta5d6ff" Tb4b4b4}

T8b949e// Build compact context by extracting only relevant paragraphs.
Tff7b72val Te6edf3contextResult Tff7b72= Te6edf3buildContextTb4b4b4(Te6edf3currentPageIdTb4b4b4, Te6edf3queryTermsTb4b4b4, Te6edf3rankedPagesTb4b4b4, Te6edf3allContentTb4b4b4, Te6edf3MAX_CONTEXT_CHARSTb4b4b4)
Te6edf3LoggerTb4b4b4.Te6edf3dTb4b4b4(Te6edf3tag Tff7b72= Te6edf3TAGTb4b4b4) Tb4b4b4{
Ta5d6ff"Ta5d6ffContext: Tffd700${Te6edf3contextResultTb4b4b4.Te6edf3partsTb4b4b4.Te6edf3sizeTffd700}Ta5d6ff pages, Tffd700${Te6edf3contextResultTb4b4b4.Te6edf3totalCharsTffd700}Ta5d6ff chars (budget Tffd700$Te6edf3MAX_CONTEXT_CHARSTa5d6ff)Ta5d6ff"
Tb4b4b4}

Tff7b72val Te6edf3prompt Tff7b72= Te6edf3buildPromptTb4b4b4(Te6edf3questionTb4b4b4, Te6edf3contextResultTb4b4b4.Te6edf3partsTb4b4b4)
Te6edf3LoggerTb4b4b4.Te6edf3dTb4b4b4(Te6edf3tag Tff7b72= Te6edf3TAGTb4b4b4) Tb4b4b4{ Ta5d6ff"Ta5d6ffPrompt: Tffd700${Te6edf3promptTb4b4b4.Te6edf3lengthTffd700}Ta5d6ff chars, history count: Tffd700${Te6edf3historyTb4b4b4.Te6edf3sizeTffd700}Ta5d6ff" Tb4b4b4}

Tff7b72val Te6edf3contextPages Tff7b72= Te6edf3contextResultTb4b4b4.Te6edf3usedPageIdsTb4b4b4.Te6edf3mapNotNull Tb4b4b4{ Te6edf3id Tff7b72-Tff7b72> Te6edf3bundleTb4b4b4.Te6edf3pagesTb4b4b4.Te6edf3find Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3id Tff7b72=Tff7b72= Te6edf3id Tb4b4b4} Tb4b4b4}

Tff7b72val Te6edf3accumulatedText Tff7b72= Te6edf3StringBuilderTb4b4b4(Tb4b4b4)
Te6edf3onDeviceModelTb4b4b4.Te6edf3generateContentStreamTb4b4b4(Te6edf3promptTb4b4b4)Tb4b4b4.Te6edf3collect Tb4b4b4{ Te6edf3chunk Tff7b72-Tff7b72>
Tff7b72val Te6edf3text Tff7b72= Te6edf3chunkTb4b4b4.Te6edf3text
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3textTb4b4b4.Te6edf3isNullOrEmptyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3accumulatedTextTb4b4b4.Te6edf3appendTb4b4b4(Te6edf3textTb4b4b4)
Te6edf3emitTb4b4b4(
Te6edf3AIDocAssistantResultTb4b4b4.Te6edf3PartialTb4b4b4(
Te6edf3answer Tff7b72= Te6edf3accumulatedTextTb4b4b4.Te6edf3toStringTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3sourcePages Tff7b72= Te6edf3contextPagesTb4b4b4,
Te6edf3usedOnDeviceModel Tff7b72= Tff7b72trueTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tff7b72val Te6edf3onDeviceAnswer Tff7b72= Te6edf3accumulatedTextTb4b4b4.Te6edf3toStringTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3trimEndTb4b4b4(Tb4b4b4)

Tff7b72val Te6edf3mentionedPages Tff7b72=
Te6edf3bundleTb4b4b4.Te6edf3pagesTb4b4b4.Te6edf3filter Tb4b4b4{ Te6edf3page Tff7b72-Tff7b72>
Te6edf3pageTb4b4b4.Te6edf3id Tff7b72!in Te6edf3contextResultTb4b4b4.Te6edf3usedPageIds Tff7b72&Tff7b72& Te6edf3onDeviceAnswerTb4b4b4.Te6edf3containsTb4b4b4(Te6edf3pageTb4b4b4.Te6edf3titleTb4b4b4, Te6edf3ignoreCase Tff7b72= Tff7b72trueTb4b4b4)
Tb4b4b4}
Tff7b72val Te6edf3allSourcePages Tff7b72= Te6edf3contextPages Tff7b72+ Te6edf3mentionedPages

T8b949e// Record this turn in the conversation history, keeping only the last 4 turns to avoid memory leaks
Te6edf3historyTb4b4b4.Te6edf3addTb4b4b4(Te6edf3question Te6edf3to Te6edf3onDeviceAnswerTb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3historyTb4b4b4.Te6edf3size Tff7b72> T79c0ff4Tb4b4b4) Tb4b4b4{
Te6edf3historyTb4b4b4.Te6edf3removeAtTb4b4b4(T79c0ff0Tb4b4b4)
Tb4b4b4}

Te6edf3emitTb4b4b4(
Te6edf3AIDocAssistantResultTb4b4b4.Te6edf3SuccessTb4b4b4(
Te6edf3answer Tff7b72= Te6edf3onDeviceAnswerTb4b4b4,
Te6edf3sourcePages Tff7b72= Te6edf3allSourcePagesTb4b4b4,
Te6edf3usedOnDeviceModel Tff7b72= Tff7b72trueTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4: Te6edf3ExceptionTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3e Tff7b72is Te6edf3kotlinxTb4b4b4.Te6edf3coroutinesTb4b4b4.Te6edf3CancellationExceptionTb4b4b4) Tff7b72throw Te6edf3e
Te6edf3LoggerTb4b4b4.Te6edf3wTb4b4b4(Te6edf3tag Tff7b72= Te6edf3TAGTb4b4b4) Tb4b4b4{ Ta5d6ff"Ta5d6ffOn-device inference failed: Tffd700${Te6edf3eTb4b4b4.Te6edf3messageTffd700}Ta5d6ff" Tb4b4b4}
Tff7b72val Te6edf3errorType Tff7b72=
Tff7b72when Tb4b4b4{
Te6edf3eTb4b4b4.Te6edf3messageTff7b72?.Te6edf3containsTb4b4b4(Ta5d6ff"Ta5d6ffBUSYTa5d6ff"Tb4b4b4, Te6edf3ignoreCase Tff7b72= Tff7b72trueTb4b4b4) Tff7b72=Tff7b72= Tff7b72true Tff7b72-Tff7b72> Te6edf3DocsAiErrorTb4b4b4.Te6edf3Busy
Te6edf3eTb4b4b4.Te6edf3messageTff7b72?.Te6edf3containsTb4b4b4(Ta5d6ff"Ta5d6ffBATTERYTa5d6ff"Tb4b4b4, Te6edf3ignoreCase Tff7b72= Tff7b72trueTb4b4b4) Tff7b72=Tff7b72= Tff7b72true Tff7b72-Tff7b72> Te6edf3DocsAiErrorTb4b4b4.Te6edf3Busy
Te6edf3eTb4b4b4.Te6edf3messageTff7b72?.Te6edf3containsTb4b4b4(Ta5d6ff"Ta5d6ffBACKGROUNDTa5d6ff"Tb4b4b4, Te6edf3ignoreCase Tff7b72= Tff7b72trueTb4b4b4) Tff7b72=Tff7b72= Tff7b72true Tff7b72-Tff7b72> Te6edf3DocsAiErrorTb4b4b4.Te6edf3Busy
Te6edf3eTb4b4b4.Te6edf3messageTff7b72?.Te6edf3containsTb4b4b4(Ta5d6ff"Ta5d6ffUNAVAILABLETa5d6ff"Tb4b4b4, Te6edf3ignoreCase Tff7b72= Tff7b72trueTb4b4b4) Tff7b72=Tff7b72= Tff7b72true Tff7b72-Tff7b72> Te6edf3DocsAiErrorTb4b4b4.Te6edf3ModelUnavailable
Tff7b72else Tff7b72-Tff7b72> Te6edf3DocsAiErrorTb4b4b4.Te6edf3Unknown
Tb4b4b4}
Tff7b72val Te6edf3fallbackPages Tff7b72= Te6edf3searchEngineTb4b4b4.Te6edf3selectForTokenBudgetTb4b4b4(Te6edf3questionTb4b4b4, Te6edf3maxChars Tff7b72= Te6edf3MAX_CONTEXT_CHARSTb4b4b4)
Te6edf3emitTb4b4b4(Te6edf3AIDocAssistantResultTb4b4b4.Te6edf3ErrorTb4b4b4(Te6edf3reason Tff7b72= Te6edf3errorTypeTb4b4b4, Te6edf3suggestedPages Tff7b72= Te6edf3fallbackPagesTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tb4b4b4}

Tff7b72override Tff7b72fun Td2a8ffresetSessionTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3historyTb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)
Te6edf3LoggerTb4b4b4.Te6edf3dTb4b4b4(Te6edf3tag Tff7b72= Te6edf3TAGTb4b4b4) Tb4b4b4{ Ta5d6ff"Ta5d6ffChat session resetTa5d6ff" Tb4b4b4}
Tb4b4b4}

Tff7b72private Tff7b72data Tff7b72class T56d364ContextResultTb4b4b4(Tff7b72val Te6edf3partsTb4b4b4: Te6edf3ListTff7b72<Tffa657StringTff7b72>Tb4b4b4, Tff7b72val Te6edf3usedPageIdsTb4b4b4: Te6edf3SetTff7b72<Tffa657StringTff7b72>Tb4b4b4, Tff7b72val Te6edf3totalCharsTb4b4b4: Tffa657IntTb4b4b4)

T8b949e/** Builds context parts from ranked pages within the given char budget. */
Tff7b72private Tff7b72fun Td2a8ffbuildContextTb4b4b4(
Te6edf3currentPageIdTb4b4b4: Tffa657String?Tb4b4b4,
Te6edf3queryTermsTb4b4b4: Te6edf3ListTff7b72<Tffa657StringTff7b72>Tb4b4b4,
Te6edf3rankedPagesTb4b4b4: Te6edf3ListTff7b72<Te6edf3PairTff7b72<Te6edf3DocPageTb4b4b4, Tffa657IntTff7b72>Tff7b72>Tb4b4b4,
Te6edf3allContentTb4b4b4: Te6edf3MapTff7b72<Te6edf3DocPageTb4b4b4, Tffa657StringTff7b72>Tb4b4b4,
Te6edf3budgetTb4b4b4: Tffa657IntTb4b4b4,
Tb4b4b4)Tb4b4b4: Te6edf3ContextResult Tb4b4b4{
Tff7b72val Te6edf3usedPageIds Tff7b72= Te6edf3mutableSetOfTff7b72<Tffa657StringTff7b72>Tb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3contextParts Tff7b72= Te6edf3mutableListOfTff7b72<Tffa657StringTff7b72>Tb4b4b4(Tb4b4b4)
Tff7b72var Te6edf3totalChars Tff7b72= T79c0ff0

T8b949e// Current page gets priority.
Tff7b72if Tb4b4b4(Te6edf3currentPageId Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3content Tff7b72= Te6edf3allContentTb4b4b4.Te6edf3entriesTb4b4b4.Te6edf3find Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3keyTb4b4b4.Te6edf3id Tff7b72=Tff7b72= Te6edf3currentPageId Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3content Tff7b72!Tff7b72= Tff7b72null Tff7b72&Tff7b72& Te6edf3contentTb4b4b4.Te6edf3valueTb4b4b4.Te6edf3isNotBlankTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3pageBudget Tff7b72= Te6edf3MAX_PAGE_CHARSTb4b4b4.Te6edf3coerceAtMostTb4b4b4(Te6edf3budgetTb4b4b4)
Tff7b72val Te6edf3extracted Tff7b72= Te6edf3extractRelevantContentTb4b4b4(Te6edf3contentTb4b4b4.Te6edf3keyTb4b4b4.Te6edf3titleTb4b4b4, Te6edf3contentTb4b4b4.Te6edf3valueTb4b4b4, Te6edf3queryTermsTb4b4b4, Te6edf3pageBudgetTb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3extractedTb4b4b4.Te6edf3isNotBlankTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3contextPartsTb4b4b4.Te6edf3addTb4b4b4(Te6edf3extractedTb4b4b4)
Te6edf3totalChars Tff7b72+Tff7b72= Te6edf3extractedTb4b4b4.Te6edf3length
Te6edf3usedPageIdsTb4b4b4.Te6edf3addTb4b4b4(Te6edf3currentPageIdTb4b4b4)
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

T8b949e// Add relevant paragraphs from top-ranked pages within budget.
Tff7b72for Tb4b4b4(Tb4b4b4(Te6edf3pageTb4b4b4, Te6edf3_Tb4b4b4) Tff7b72in Te6edf3rankedPagesTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3pageTb4b4b4.Te6edf3id Tff7b72in Te6edf3usedPageIdsTb4b4b4) Tff7b72continue
Tff7b72if Tb4b4b4(Te6edf3totalChars Tff7b72>Tff7b72= Te6edf3budgetTb4b4b4) Tff7b72break
Tff7b72val Te6edf3pageContent Tff7b72= Te6edf3allContentTff7b72[Te6edf3pageTff7b72] Tff7b72?: Tff7b72continue
Tff7b72if Tb4b4b4(Te6edf3pageContentTb4b4b4.Te6edf3isBlankTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72continue

Tff7b72val Te6edf3snippetBudget Tff7b72= Tb4b4b4(Te6edf3budget Tff7b72- Te6edf3totalCharsTb4b4b4)Tb4b4b4.Te6edf3coerceAtMostTb4b4b4(Te6edf3MAX_SNIPPET_CHARSTb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3snippetBudget Tff7b72< Te6edf3MIN_USEFUL_SNIPPETTb4b4b4) Tff7b72break

Tff7b72val Te6edf3extracted Tff7b72= Te6edf3extractRelevantContentTb4b4b4(Te6edf3pageTb4b4b4.Te6edf3titleTb4b4b4, Te6edf3pageContentTb4b4b4, Te6edf3queryTermsTb4b4b4, Te6edf3snippetBudgetTb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3extractedTb4b4b4.Te6edf3isNotBlankTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3contextPartsTb4b4b4.Te6edf3addTb4b4b4(Te6edf3extractedTb4b4b4)
Te6edf3totalChars Tff7b72+Tff7b72= Te6edf3extractedTb4b4b4.Te6edf3length
Te6edf3usedPageIdsTb4b4b4.Te6edf3addTb4b4b4(Te6edf3pageTb4b4b4.Te6edf3idTb4b4b4)
Tb4b4b4}
Tb4b4b4}

Tff7b72return Te6edf3ContextResultTb4b4b4(Te6edf3parts Tff7b72= Te6edf3contextPartsTb4b4b4, Te6edf3usedPageIds Tff7b72= Te6edf3usedPageIdsTb4b4b4, Te6edf3totalChars Tff7b72= Te6edf3totalCharsTb4b4b4)
Tb4b4b4}

T8b949e/** Extracts query terms from a question, filtering short/stop words. */
Tff7b72private Tff7b72fun Td2a8ffextractQueryTermsTb4b4b4(Te6edf3questionTb4b4b4: Tffa657StringTb4b4b4)Tb4b4b4: Te6edf3ListTff7b72<Tffa657StringTff7b72> Tff7b72= Te6edf3question
Tb4b4b4.Te6edf3lowercaseTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3replaceTb4b4b4(Te6edf3RegexTb4b4b4(Ta5d6ff"Ta5d6ff[^Ta5d6ff\\Ta5d6ffp{L}Ta5d6ff\\Ta5d6ffp{N}Ta5d6ff\\Ta5d6ffs-]Ta5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ff Ta5d6ff"Tb4b4b4)
Tb4b4b4.Te6edf3splitTb4b4b4(Te6edf3RegexTb4b4b4(Ta5d6ff"Ta5d6ff\\Ta5d6ffs+Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3filter Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3length Tff7b72>Tff7b72= T79c0ff2 Tff7b72&Tff7b72& Tffa657it Tff7b72!in Te6edf3STOP_WORDS Tb4b4b4}
Tb4b4b4.Te6edf3distinctTb4b4b4(Tb4b4b4)

T8b949e/**
* Extracts the most relevant content from a page: the paragraphs that contain query terms, with markdown formatting
* stripped for maximum information density.
*/
Tff7b72private Tff7b72fun Td2a8ffextractRelevantContentTb4b4b4(
Te6edf3titleTb4b4b4: Tffa657StringTb4b4b4,
Te6edf3markdownTb4b4b4: Tffa657StringTb4b4b4,
Te6edf3queryTermsTb4b4b4: Te6edf3ListTff7b72<Tffa657StringTff7b72>Tb4b4b4,
Te6edf3maxCharsTb4b4b4: Tffa657IntTb4b4b4,
Tb4b4b4)Tb4b4b4: Tffa657String Tb4b4b4{
Tff7b72val Te6edf3plainText Tff7b72= Te6edf3stripMarkdownTb4b4b4(Te6edf3markdownTb4b4b4)

T8b949e// Split into paragraphs (double newline or section breaks).
Tff7b72val Te6edf3paragraphs Tff7b72= Te6edf3plainTextTb4b4b4.Te6edf3splitTb4b4b4(Te6edf3RegexTb4b4b4(Ta5d6ff"Ta5d6ff\Ta5d6ffn{2,}Ta5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3map Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4.Te6edf3filter Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3length Tff7b72>Tff7b72= Te6edf3MIN_PARAGRAPH_LEN Tb4b4b4}

T8b949e// Score each paragraph by how many query terms it contains.
Tff7b72val Te6edf3scored Tff7b72=
Te6edf3paragraphsTb4b4b4.Te6edf3map Tb4b4b4{ Te6edf3paragraph Tff7b72-Tff7b72>
Tff7b72val Te6edf3lower Tff7b72= Te6edf3paragraphTb4b4b4.Te6edf3lowercaseTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3hits Tff7b72= Te6edf3queryTermsTb4b4b4.Te6edf3count Tb4b4b4{ Te6edf3term Tff7b72-Tff7b72> Te6edf3lowerTb4b4b4.Te6edf3containsTb4b4b4(Te6edf3termTb4b4b4) Tb4b4b4}
Te6edf3paragraph Te6edf3to Te6edf3hits
Tb4b4b4}

T8b949e// Take paragraphs with hits first (sorted by hits desc), then fill with top paragraphs for context.
Tff7b72val Te6edf3withHits Tff7b72= Te6edf3scoredTb4b4b4.Te6edf3filter Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3second Tff7b72> T79c0ff0 Tb4b4b4}Tb4b4b4.Te6edf3sortedByDescending Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3second Tb4b4b4}
Tff7b72val Te6edf3withoutHits Tff7b72= Te6edf3scoredTb4b4b4.Te6edf3filter Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3second Tff7b72=Tff7b72= T79c0ff0 Tb4b4b4}

Tff7b72val Te6edf3result Tff7b72= Te6edf3StringBuilderTb4b4b4(Ta5d6ff"Tffd700$Te6edf3titleTa5d6ff: Ta5d6ff"Tb4b4b4)
Tff7b72for Tb4b4b4(Tb4b4b4(Te6edf3paragraphTb4b4b4, Te6edf3_Tb4b4b4) Tff7b72in Te6edf3withHits Tff7b72+ Te6edf3withoutHitsTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3resultTb4b4b4.Te6edf3length Tff7b72+ Te6edf3paragraphTb4b4b4.Te6edf3length Tff7b72+ T79c0ff1 Tff7b72> Te6edf3maxCharsTb4b4b4) Tb4b4b4{
T8b949e// Try to fit a truncated version if we have room.
Tff7b72val Te6edf3remaining Tff7b72= Te6edf3maxChars Tff7b72- Te6edf3resultTb4b4b4.Te6edf3length Tff7b72- T79c0ff1
Tff7b72if Tb4b4b4(Te6edf3remaining Tff7b72> Te6edf3MIN_USEFUL_SNIPPETTb4b4b4) Tb4b4b4{
Te6edf3resultTb4b4b4.Te6edf3appendTb4b4b4(Te6edf3paragraphTb4b4b4.Te6edf3takeTb4b4b4(Te6edf3remainingTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tff7b72break
Tb4b4b4}
Te6edf3resultTb4b4b4.Te6edf3appendTb4b4b4(Te6edf3paragraphTb4b4b4)Tb4b4b4.Te6edf3appendTb4b4b4(Ta5d6ff'\n'Tb4b4b4)
Tb4b4b4}
Tff7b72return Te6edf3resultTb4b4b4.Te6edf3toStringTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)
Tb4b4b4}

T8b949e/** Strips markdown formatting to produce dense plain text. */
Tff7b72private Tff7b72fun Td2a8ffstripMarkdownTb4b4b4(Te6edf3markdownTb4b4b4: Tffa657StringTb4b4b4)Tb4b4b4: Tffa657String Tff7b72= Te6edf3markdown
Tb4b4b4.Te6edf3replaceTb4b4b4(Te6edf3RegexTb4b4b4(Ta5d6ff"Ta5d6ff^#{1,6}Ta5d6ff\\Ta5d6ffs+Ta5d6ff"Tb4b4b4, Te6edf3RegexOptionTb4b4b4.Te6edf3MULTILINETb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4) T8b949e// headers
Tb4b4b4.Te6edf3replaceTb4b4b4(Te6edf3RegexTb4b4b4(Ta5d6ff"Ta5d6ff\\Ta5d6ff[([^]]+)]Ta5d6ff\\Ta5d6ff([^)]+Ta5d6ff\\Ta5d6ff)Ta5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Tffd700$Te6edf31Ta5d6ff"Tb4b4b4) T8b949e// links → text
Tb4b4b4.Te6edf3replaceTb4b4b4(Te6edf3RegexTb4b4b4(Ta5d6ff"Ta5d6ff!Ta5d6ff\\Ta5d6ff[([^]]*)]Ta5d6ff\\Ta5d6ff([^)]+Ta5d6ff\\Ta5d6ff)Ta5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Tffd700$Te6edf31Ta5d6ff"Tb4b4b4) T8b949e// images → alt
Tb4b4b4.Te6edf3replaceTb4b4b4(Te6edf3RegexTb4b4b4(Ta5d6ff"Ta5d6ff[*_]{1,3}([^*_]+)[*_]{1,3}Ta5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Tffd700$Te6edf31Ta5d6ff"Tb4b4b4) T8b949e// bold/italic
Tb4b4b4.Te6edf3replaceTb4b4b4(Te6edf3RegexTb4b4b4(Ta5d6ff"Ta5d6ff`{1,3}[^`]*`{1,3}Ta5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4) T8b949e// inline code
Tb4b4b4.Te6edf3replaceTb4b4b4(Te6edf3RegexTb4b4b4(Ta5d6ff"Ta5d6ff^[>|Ta5d6ff\\Ta5d6ff-*+]Ta5d6ff\\Ta5d6ffs?Ta5d6ff"Tb4b4b4, Te6edf3RegexOptionTb4b4b4.Te6edf3MULTILINETb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4) T8b949e// block quotes, lists
Tb4b4b4.Te6edf3replaceTb4b4b4(Te6edf3RegexTb4b4b4(Ta5d6ff"Ta5d6ff\\Ta5d6ff|Ta5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ff Ta5d6ff"Tb4b4b4) T8b949e// table pipes
Tb4b4b4.Te6edf3replaceTb4b4b4(Te6edf3RegexTb4b4b4(Ta5d6ff"Ta5d6ff-{3,}Ta5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4) T8b949e// horizontal rules
Tb4b4b4.Te6edf3replaceTb4b4b4(Te6edf3RegexTb4b4b4(Ta5d6ff"Ta5d6ff {2,}Ta5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ff Ta5d6ff"Tb4b4b4) T8b949e// collapse whitespace
Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)

T8b949e/**
* Ranks pages by relevance using full-text content search + keyword/title matching. Returns pages sorted by score
* descending, filtering out zero-score pages.
*/
Tff7b72private Tff7b72fun Td2a8ffrankPagesByRelevanceTb4b4b4(
Te6edf3queryTermsTb4b4b4: Te6edf3ListTff7b72<Tffa657StringTff7b72>Tb4b4b4,
Te6edf3pagesTb4b4b4: Te6edf3ListTff7b72<Te6edf3DocPageTff7b72>Tb4b4b4,
Te6edf3allContentTb4b4b4: Te6edf3MapTff7b72<Te6edf3DocPageTb4b4b4, Tffa657StringTff7b72>Tb4b4b4,
Tb4b4b4)Tb4b4b4: Te6edf3ListTff7b72<Te6edf3PairTff7b72<Te6edf3DocPageTb4b4b4, Tffa657IntTff7b72>Tff7b72> Tff7b72= Te6edf3pages
Tb4b4b4.Te6edf3map Tb4b4b4{ Te6edf3page Tff7b72-Tff7b72>
Tff7b72var Te6edf3score Tff7b72= T79c0ff0
Tff7b72val Te6edf3content Tff7b72= Te6edf3allContentTff7b72[Te6edf3pageTff7b72]Tff7b72?.Te6edf3lowercaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3orEmptyTb4b4b4(Tb4b4b4)

Tff7b72for Tb4b4b4(Te6edf3term Tff7b72in Te6edf3queryTermsTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3contentTb4b4b4.Te6edf3containsTb4b4b4(Te6edf3termTb4b4b4)Tb4b4b4) Te6edf3score Tff7b72+Tff7b72= Te6edf3CONTENT_MATCH_SCORE
Tff7b72if Tb4b4b4(Te6edf3pageTb4b4b4.Te6edf3titleTb4b4b4.Te6edf3lowercaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3containsTb4b4b4(Te6edf3termTb4b4b4)Tb4b4b4) Te6edf3score Tff7b72+Tff7b72= Te6edf3TITLE_MATCH_SCORE
Tff7b72if Tb4b4b4(Te6edf3pageTb4b4b4.Te6edf3keywordsTb4b4b4.Te6edf3any Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3lowercaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3containsTb4b4b4(Te6edf3termTb4b4b4) Tb4b4b4}Tb4b4b4) Te6edf3score Tff7b72+Tff7b72= Te6edf3KEYWORD_MATCH_SCORE
Tff7b72if Tb4b4b4(Te6edf3pageTb4b4b4.Te6edf3aliasesTb4b4b4.Te6edf3any Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3lowercaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3containsTb4b4b4(Te6edf3termTb4b4b4) Tb4b4b4}Tb4b4b4) Te6edf3score Tff7b72+Tff7b72= Te6edf3ALIAS_MATCH_SCORE
Tb4b4b4}

Te6edf3page Te6edf3to Te6edf3score
Tb4b4b4}
Tb4b4b4.Te6edf3filter Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3second Tff7b72> T79c0ff0 Tb4b4b4}
Tb4b4b4.Te6edf3sortedByDescending Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3second Tb4b4b4}

Tff7b72private Tff7b72fun Td2a8ffbuildPromptTb4b4b4(Te6edf3questionTb4b4b4: Tffa657StringTb4b4b4, Te6edf3contextPartsTb4b4b4: Te6edf3ListTff7b72<Tffa657StringTff7b72>Tb4b4b4)Tb4b4b4: Tffa657String Tb4b4b4{
Tff7b72val Te6edf3context Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3contextPartsTb4b4b4.Te6edf3isNotEmptyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3contextPartsTb4b4b4.Te6edf3joinToStringTb4b4b4(Ta5d6ff"Ta5d6ff\Ta5d6ffnTa5d6ff\Ta5d6ffnTa5d6ff"Tb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3FALLBACK_CONTEXT
Tb4b4b4}

Tff7b72val Te6edf3myNode Tff7b72= Te6edf3nodeRepositoryTb4b4b4.Te6edf3myNodeInfoTb4b4b4.Te6edf3value
Tff7b72val Te6edf3ourNode Tff7b72= Te6edf3nodeRepositoryTb4b4b4.Te6edf3ourNodeInfoTb4b4b4.Te6edf3value
Tff7b72val Te6edf3nodeDb Tff7b72= Te6edf3nodeRepositoryTb4b4b4.Te6edf3nodeDBbyNumTb4b4b4.Te6edf3value

Tff7b72val Te6edf3hardwareInfo Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3myNode Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Ta5d6ff"""
Ta5d6ff |- Connected Hardware: Tffd700${Te6edf3myNodeTb4b4b4.Te6edf3model Tff7b72?: Ta5d6ff"Te6edf3Unknown Te6edf3modelTa5d6ff"Tffd700}Ta5d6ff (Firmware: Tffd700${Te6edf3myNodeTb4b4b4.Te6edf3firmwareVersion Tff7b72?: Ta5d6ff"Te6edf3UnknownTa5d6ff"Tffd700}Ta5d6ff)
|- Local Node Number: Tffd700${Te6edf3myNodeTb4b4b4.Te6edf3myNodeNumTffd700}
Ta5d6ff |- GPS Capabilities: Tffd700${Tff7b72if Tb4b4b4(Te6edf3myNodeTb4b4b4.Te6edf3hasGPSTb4b4b4) Ta5d6ff"Te6edf3EquippedTff7b72/Te6edf3ActiveTa5d6ff" Tff7b72else Ta5d6ff"Te6edf3No Te6edf3GPSTa5d6ff"Tffd700}
Ta5d6ff |- WiFi Enabled: Tffd700${Tff7b72if Tb4b4b4(Te6edf3myNodeTb4b4b4.Te6edf3hasWifiTb4b4b4) Ta5d6ff"Te6edf3YesTa5d6ff" Tff7b72else Ta5d6ff"Te6edf3NoTa5d6ff"Tffd700}
Ta5d6ff |- Channel Utilization: Tffd700${Te6edf3myNodeTb4b4b4.Te6edf3channelUtilizationTffd700}Ta5d6ff%
|- Airtime Tx: Tffd700${Te6edf3myNodeTb4b4b4.Te6edf3airUtilTxTffd700}Ta5d6ff%
Ta5d6ff"""
Tb4b4b4.Te6edf3trimIndentTb4b4b4(Tb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Ta5d6ff"Ta5d6ff- Connected Hardware: No local node connected right now (user should pair their radio over Bluetooth).Ta5d6ff"
Tb4b4b4}

Tff7b72val Te6edf3metricsInfo Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3ourNode Tff7b72!Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3battery Tff7b72= Te6edf3ourNodeTb4b4b4.Te6edf3batteryLevel
Tff7b72val Te6edf3batteryStr Tff7b72= Tff7b72if Tb4b4b4(Te6edf3battery Tff7b72!Tff7b72= Tff7b72null Tff7b72&Tff7b72& Te6edf3battery Tff7b72in T79c0ff1.Tb4b4b4.T79c0ff1T79c0ff0T79c0ff0Tb4b4b4) Ta5d6ff"Tffd700$Te6edf3batteryTa5d6ff%Ta5d6ff" Tff7b72else Ta5d6ff"Ta5d6ffUnknown (External Power)Ta5d6ff"
Tff7b72val Te6edf3voltage Tff7b72= Te6edf3ourNodeTb4b4b4.Te6edf3voltage
Tff7b72val Te6edf3voltStr Tff7b72= Tff7b72if Tb4b4b4(Te6edf3voltage Tff7b72!Tff7b72= Tff7b72null Tff7b72&Tff7b72& Te6edf3voltage Tff7b72> T79c0ff0fTb4b4b4) Ta5d6ff"Tffd700${Te6edf3voltageTffd700}Ta5d6ffVTa5d6ff" Tff7b72else Ta5d6ff"Ta5d6ffUnknownTa5d6ff"

Ta5d6ff"""
Ta5d6ff |- Node Battery Status: Tffd700$Te6edf3batteryStrTa5d6ff (Tffd700$Te6edf3voltStrTa5d6ff)
|- User Identity: Tffd700${Te6edf3ourNodeTb4b4b4.Te6edf3userTb4b4b4.Te6edf3short_nameTffd700}Ta5d6ff (Tffd700${Te6edf3ourNodeTb4b4b4.Te6edf3userTb4b4b4.Te6edf3long_nameTffd700}Ta5d6ff)
|- Position: Tffd700${Tff7b72if Tb4b4b4(Te6edf3ourNodeTb4b4b4.Te6edf3isUnknownUserTb4b4b4) Ta5d6ff"Te6edf3Unknown Te6edf3userTa5d6ff" Tff7b72else Ta5d6ff"Te6edf3Valid Te6edf3user Te6edf3profile Te6edf3syncedTa5d6ff"Tffd700}
Ta5d6ff Ta5d6ff"""
Tb4b4b4.Te6edf3trimIndentTb4b4b4(Tb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Ta5d6ff"Ta5d6ff- Node Status: Unknown user identity (no radio profile synced yet)Ta5d6ff"
Tb4b4b4}

Tff7b72val Te6edf3meshInfo Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3nodeDbTb4b4b4.Te6edf3isNotEmptyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3totalNodes Tff7b72= Te6edf3nodeDbTb4b4b4.Te6edf3size
Tff7b72val Te6edf3onlineNodes Tff7b72= Te6edf3nodeDbTb4b4b4.Te6edf3valuesTb4b4b4.Te6edf3count Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3isOnline Tb4b4b4}
Ta5d6ff"""
Ta5d6ff |- Mesh Network Size: Tffd700$Te6edf3totalNodesTa5d6ff nodes registered in local DB
|- Active Peers Online: Tffd700$Te6edf3onlineNodesTa5d6ff nodes currently active on the air
Ta5d6ff"""
Tb4b4b4.Te6edf3trimIndentTb4b4b4(Tb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Ta5d6ff"Ta5d6ff- Mesh Network: Empty node database (offline or newly installed app)Ta5d6ff"
Tb4b4b4}

Tff7b72val Te6edf3liveStatusContext Tff7b72=
Ta5d6ff"""
Ta5d6ff |Active Live Radio Node & Mesh Network Status:
|Tffd700$Te6edf3hardwareInfo
Ta5d6ff |Tffd700$Te6edf3metricsInfo
Ta5d6ff |Tffd700$Te6edf3meshInfo
Ta5d6ff Ta5d6ff"""
Tb4b4b4.Te6edf3trimMarginTb4b4b4(Tb4b4b4)

Tff7b72val Te6edf3historyStr Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3historyTb4b4b4.Te6edf3isNotEmptyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Ta5d6ff"Ta5d6ffPrevious conversation history:Ta5d6ff\Ta5d6ffnTa5d6ff" Tff7b72+
Te6edf3historyTb4b4b4.Te6edf3takeLastTb4b4b4(T79c0ff4Tb4b4b4)Tb4b4b4.Te6edf3joinToStringTb4b4b4(Ta5d6ff"Ta5d6ff\Ta5d6ffnTa5d6ff"Tb4b4b4) Tb4b4b4{ Tb4b4b4(Te6edf3qTb4b4b4, Te6edf3aTb4b4b4) Tff7b72-Tff7b72> Ta5d6ff"Ta5d6ffUser: Tffd700$Te6edf3qTa5d6ff\Ta5d6ffnAssistant: Tffd700$Te6edf3aTa5d6ff" Tb4b4b4} Tff7b72+
Ta5d6ff"Ta5d6ff\Ta5d6ffnTa5d6ff\Ta5d6ffnTa5d6ff"
Tb4b4b4} Tff7b72else Tb4b4b4{
Ta5d6ff"Ta5d6ff"
Tb4b4b4}

Tff7b72return Ta5d6ff"""
Ta5d6ff |System Instruction:
|Tffd700$Te6edf3SYSTEM_INSTRUCTION
Ta5d6ff |
|Tffd700$Te6edf3liveStatusContext
Ta5d6ff |
|Bundled app documentation:
|Tffd700$Te6edf3context
Ta5d6ff |
|Tffd700${Te6edf3historyStrTffd700}Ta5d6ffUser question: Tffd700$Te6edf3question
Ta5d6ff Ta5d6ff"""
Tb4b4b4.Te6edf3trimMarginTb4b4b4(Tb4b4b4)
Tb4b4b4}

Tff7b72companion Tff7b72object Tb4b4b4{
Tff7b72private Tff7b72const Tff7b72val Te6edf3TAG Tff7b72= Ta5d6ff"Ta5d6ffChirpyAITa5d6ff"

T8b949e/** Gemini Nano v4 — local on-device LLM model supporting larger 32K token context window. */
Tff7b72private Tff7b72const Tff7b72val Te6edf3MODEL_NAME Tff7b72= Ta5d6ff"Ta5d6ffnano-v4-fullTa5d6ff"

Tff7b72private Tff7b72const Tff7b72val Te6edf3SYSTEM_INSTRUCTION Tff7b72=
Ta5d6ff"""Ta5d6ffYou are Chirpy, the friendly AI assistant and official Node mascot built into the Meshtastic Android app. You help users understand mesh networking, configure their Meshtastic nodes, troubleshoot connectivity issues, and get the most out of the Meshtastic ecosystem.

Personality: Helpful, concise, cheerful, and highly enthusiastic about mesh networking. You represent a cute, helpful little LoRa radio node! Use short paragraphs. Include relevant emoji (📡 🔋 📍 📱 📶 🔌). Always refer to yourself as Chirpy. Never call yourself Gemma or Gemini. Keep a light, highly energetic, and friendly tone, actively packing your responses with fun, clever radio, hardware, and mesh networking puns! Work them in naturally but frequently (e.g., Ta5d6ff"Ta5d6ffstaying connected!Ta5d6ff"Ta5d6ff, Ta5d6ff"Ta5d6fffully charged and ready to assist!Ta5d6ff"Ta5d6ff, Ta5d6ff"Ta5d6fflet's relay some knowledge!Ta5d6ff"Ta5d6ff, Ta5d6ff"Ta5d6fftime to hop to it!Ta5d6ff"Ta5d6ff, Ta5d6ff"Ta5d6ffwe're totally on the same frequency!Ta5d6ff"Ta5d6ff, Ta5d6ff"Ta5d6ffattenuation got you down?Ta5d6ff"Ta5d6ff, Ta5d6ff"Ta5d6fflet's boost that signal!Ta5d6ff"Ta5d6ff, Ta5d6ff"Ta5d6ffchanneling my inner router!Ta5d6ff"Ta5d6ff). Balance your cheerful node humor with clear, technically accurate help first and foremost!

Knowledge sources (in priority order):
1. Bundled app documentation provided as context below
2. Official Meshtastic documentation at meshtastic.org/docs
3. Official Meshtastic GitHub repositories (github.com/meshtastic)
4. General LoRa/mesh networking knowledge

Guidelines:
Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully Answer the user's question directly and helpfully
When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them When the bundled docs cover the topic, cite them
When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help When the bundled docs don't cover it, use your knowledge of official Meshtastic sources — don't refuse to help
Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites Only reference official Meshtastic sources (meshtastic.org, github.com/meshtastic) — never cite random forums, blogs, or third-party sites
For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs For firmware-specific or hardware-specific questions beyond app scope, point users to meshtastic.org/docs
Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail Keep answers concise (2-4 short paragraphs max) unless the user asks for detail
If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f If you're truly unsure about something Meshtastic-specific, say so honestly rather than guessing`f`FTa5d6ff"""`f

T8b949e/** Total context char budget — optimized for modern on-device Nano v4 (~32K tokens context window). */
Tff7b72private Tff7b72const Tff7b72val Te6edf3MAX_CONTEXT_CHARS Tff7b72= T79c0ff3T79c0ff2Te6edf3_000

T8b949e/** Max chars for the current page (gets priority). */
Tff7b72private Tff7b72const Tff7b72val Te6edf3MAX_PAGE_CHARS Tff7b72= T79c0ff1T79c0ff6Te6edf3_000

T8b949e/** Max chars per additional page snippet. */
Tff7b72private Tff7b72const Tff7b72val Te6edf3MAX_SNIPPET_CHARS Tff7b72= T79c0ff8Te6edf3_000

T8b949e/** Minimum useful snippet size — don't bother with tiny fragments. */
Tff7b72private Tff7b72const Tff7b72val Te6edf3MIN_USEFUL_SNIPPET Tff7b72= T79c0ff1T79c0ff0T79c0ff0

T8b949e/** Minimum paragraph length to consider. */
Tff7b72private Tff7b72const Tff7b72val Te6edf3MIN_PARAGRAPH_LEN Tff7b72= T79c0ff2T79c0ff0

T8b949e// Scoring weights for page ranking
Tff7b72private Tff7b72const Tff7b72val Te6edf3CONTENT_MATCH_SCORE Tff7b72= T79c0ff3
Tff7b72private Tff7b72const Tff7b72val Te6edf3TITLE_MATCH_SCORE Tff7b72= T79c0ff1T79c0ff0
Tff7b72private Tff7b72const Tff7b72val Te6edf3KEYWORD_MATCH_SCORE Tff7b72= T79c0ff7
Tff7b72private Tff7b72const Tff7b72val Te6edf3ALIAS_MATCH_SCORE Tff7b72= T79c0ff5

Tff7b72private Tff7b72val Te6edf3STOP_WORDS Tff7b72=
Te6edf3setOfTb4b4b4(
Ta5d6ff"Ta5d6fftheTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffisTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffatTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffinTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffonTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fftoTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffofTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffanTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffitTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffdoTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffmeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffmyTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6fforTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffifTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffbeTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffasTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffbyTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffsoTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffweTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffheTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffupTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffnoTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffamTa5d6ff"Tb4b4b4,
Ta5d6ff"Ta5d6ffusTa5d6ff"Tb4b4b4,
Tb4b4b4)

Tff7b72private Tff7b72const Tff7b72val Te6edf3FALLBACK_CONTEXT Tff7b72=
Ta5d6ff"Ta5d6ffMeshtastic is an open-source mesh networking platform for LoRa radios. Ta5d6ff" Tff7b72+
Ta5d6ff"Ta5d6ffThe app connects to Meshtastic devices via Bluetooth or WiFi to send messages, Ta5d6ff" Tff7b72+
Ta5d6ff"Ta5d6ffshare location, and manage mesh network settings like channels, nodes, and modules.Ta5d6ff"
Tb4b4b4}
Tb4b4b4}

Served by rngit 1.5.3 - Generated in 0.2s